#include "../include/DirectoryScanner.h"
#include <dirent.h>
#include <sys/types.h>
#include <vector> // 添加这个
#include <string> // 添加这个

std::vector<std::string> DirectoryScanner::scan(const std::string &dir)
{
    std::vector<std::string> files;

    DIR *dp = opendir(dir.c_str()); // 打开目录，返回目录流指针
    if (dp == nullptr)
    {
        return files; // 目录打开失败，返回空向量
    }

    struct dirent *entry;
    while ((entry = readdir(dp)) != nullptr)
    { // 读取目录中的下一个条目
        std::string filename = entry->d_name;

        // 跳过 "." 和 ".." - 这两个是系统目录，需要过滤掉
        if (filename == "." || filename == "..")
        {
            continue;
        }

        if (entry->d_type == DT_REG)
        {                                                // 判断是否为普通文件
            std::string fullPath = dir + "/" + filename; // 完整路径 - 返回 目录/文件名 的格式
            files.push_back(fullPath);
        }
    }

    closedir(dp); // 关闭目录流

    return files;
}